package yh.design.strategy;

import org.springframework.stereotype.Component;
import yh.design.common.payenum.Constants;
import yh.design.model.CashDTO;
import yh.design.model.UnionPayDTO;
import yh.design.model.VipCardDTO;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

/**
 * 实际开发中第一种方式 封装支付策略map
 * 策略控制类
 * @author: zyh
 * @date: 2025/5/15 12:19
 **/
@Component
public class IPayContextMap_1 {




    //支付算法策略组
    public static Map<Integer, IPayment> payStrtegyMap = new HashMap<>();


    @Resource
    private IPayment<CashDTO> cashPayment;

    @Resource
    private IPayment<UnionPayDTO> unionPayment;

    @Resource
    private IPayment<VipCardDTO> vipCardPayment;


    /**
     * 第一种常见做法 维护策略map
     * 如果补充一个新的支付方式，需要维护该 map
     */
    @PostConstruct
    public void init(){
        payStrtegyMap.put(Constants.PayWayEnum.CASH_PAY.getPayWay(), cashPayment);

        payStrtegyMap.put(Constants.PayWayEnum.UNION_PAY.getPayWay(), unionPayment);

        payStrtegyMap.put(Constants.PayWayEnum.VIPCARD_PAY.getPayWay(), vipCardPayment);
    }




}
